package com.qingcheng.util;

import java.lang.reflect.Field;
import java.util.List;

/**
 * @author lin.jia
 */
public class ObjectUtil {

    /**
     * 比对对象是否为null
     *
     * @param o 对象
     * @return 是null返回true，否则返回false
     */
    public static boolean isNull(Object o) {
        return o == null;
    }


    /**
     * 比对对象是否不为null
     *
     * @param o 对象
     * @return 不为null返回true，否则是false
     */
    public static boolean isNotNull(Object o) {
        return !isNull(o);
    }


    /**
     * 比对多个对象是否为空
     *
     * @param objects 对象参数
     * @return 如果都为null，返回true，否则返回false
     */
    public static boolean isNulls(Object... objects) {
        for (Object o : objects) {
            if (isNotNull(o)) {
                return false;
            }
        }
        return true;
    }


    /**
     * 比对多个对象是否不为空
     *
     * @param objects 对象参数
     * @return 如果都不为null，返回true，否则返回false
     */
    public static boolean isNotNulls(Object... objects) {
        for (Object o : objects) {
            if (isNull(o)) {
                return false;
            }
        }
        return true;
    }

    public static void set(Field f, Object target, Object v) {
        try {
            f.set(target, v);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }

    public static Object get(Object source, Field f) {
        Object val = null;
        f.setAccessible(true);
        try {
            val = f.get(source);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return val;
    }

    public static Field getField(Class<?> c, String fieldName) {
        try {
            return c.getDeclaredField(fieldName);
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static boolean isListNull(List list) {
        return list == null || list.isEmpty();
    }
}
